package com.inei.evaluaciondelaencuesta.view;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.inei.evaluaciondelaencuesta.R;
import com.inei.evaluaciondelaencuesta.controller.RespuestaEncuestaController;
import com.inei.evaluaciondelaencuesta.model.entity.RespuestaEncuesta;
import com.inei.evaluaciondelaencuesta.tools.Manejo;

public class Encuesta_Fin_Activity extends Activity {

	// Pregunta 1
	RadioButton rbP1_1, rbP1_2;
	EditText etP1_OBS;

	// Pregunta 2
	RadioButton rbP2_1, rbP2_2;
	EditText etP2_OBS;

	// Pregunta 3
	RadioButton rbP3_1, rbP3_2, rbP3_3, rbP3_4;
	EditText etP3_4_Otro, etP3_OBS;

	// Pregunta 4
	RadioButton rbP4_1, rbP4_2;
	EditText etP4_OBS;

	// Pregunta 5
	RadioButton rbP5_1, rbP5_2, rbP5_3;
	EditText etP5_OBS;

	// Pregunta 6
	RadioButton rbP6_1, rbP6_2, rbP6_3, rbP6_4, rbP6_5, rbP6_6, rbP6_7, rbP6_8;
	EditText etP6_4_Otro, etP6_8_Otro, etP6_OBS;

	// variable componentes

	// variables
	private int marco_id, formato_id;
	private String conglomerado, grupo, vivienda, hogar_id;
	private RespuestaEncuestaController con;
	private List<RespuestaEncuesta> lista;
	private Manejo manejo;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_encuesta_fin);

		con = new RespuestaEncuestaController(this);

		IniciarComponentes();

		AgregarEventos();

		CargarDatos();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.encuesta_i, menu);
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.mnGuardar:
			GuardarDatos();
			if (lista.get(0).getRespuesta_id() > 0) {
				if (con.RespuestaEncuestaModificar(lista) > 0) {
					Intent ir_encuesta_fin = new Intent(this,
							Marco_Activity.class);
					Bundle datos = getIntent().getExtras();
					ir_encuesta_fin.putExtras(datos);
					startActivity(ir_encuesta_fin);

					Toast.makeText(this, "Se actualizo con exito",
							Toast.LENGTH_SHORT).show();
					finish();
				} else {
					Toast.makeText(this, "Error al actualizar",
							Toast.LENGTH_SHORT).show();
				}
			} else {
				if (con.RespuestaEncuestaAdicionar(lista) > 0) {
					Intent ir_encuesta_fin = new Intent(this,
							Marco_Activity.class);
					Bundle datos = getIntent().getExtras();
					ir_encuesta_fin.putExtras(datos);
					startActivity(ir_encuesta_fin);

					Toast.makeText(this, "Se guardo con exito",
							Toast.LENGTH_SHORT).show();
					finish();
				} else {
					Toast.makeText(this, "Error al guardar", Toast.LENGTH_SHORT)
							.show();
				}
			}
			break;
		case R.id.mnSalir:
			finish();
			break;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	@Override
	public void onBackPressed() {
		Intent ir_encuesta = new Intent(this, Encuesta_XIII_2_Activity.class);
		Bundle datos = getIntent().getExtras();
		ir_encuesta.putExtras(datos);
		startActivity(ir_encuesta);
		finish();

		super.onBackPressed();
	}

	private void IniciarComponentes() {
		// Pregunta 1
		rbP1_1 = (RadioButton) findViewById(R.id.rbP1_1);
		rbP1_2 = (RadioButton) findViewById(R.id.rbP1_2);
		etP1_OBS = (EditText) findViewById(R.id.etP1_OBS);

		// Pregunta 2
		rbP2_1 = (RadioButton) findViewById(R.id.rbP2_1);
		rbP2_2 = (RadioButton) findViewById(R.id.rbP2_2);
		etP2_OBS = (EditText) findViewById(R.id.etP2_OBS);

		// Pregunta 3
		rbP3_1 = (RadioButton) findViewById(R.id.rbP3_1);
		rbP3_2 = (RadioButton) findViewById(R.id.rbP3_2);
		rbP3_3 = (RadioButton) findViewById(R.id.rbP3_3);
		rbP3_4 = (RadioButton) findViewById(R.id.rbP3_4);
		etP3_4_Otro = (EditText) findViewById(R.id.etP3_4_Otro);
		etP3_OBS = (EditText) findViewById(R.id.etP3_OBS);

		// Pregunta 4
		rbP4_1 = (RadioButton) findViewById(R.id.rbP4_1);
		rbP4_2 = (RadioButton) findViewById(R.id.rbP4_2);
		etP4_OBS = (EditText) findViewById(R.id.etP4_OBS);

		// Pregunta 5
		rbP5_1 = (RadioButton) findViewById(R.id.rbP5_1);
		rbP5_2 = (RadioButton) findViewById(R.id.rbP5_2);
		rbP5_3 = (RadioButton) findViewById(R.id.rbP5_3);
		etP5_OBS = (EditText) findViewById(R.id.etP5_OBS);

		// Pregunta 6
		rbP6_1 = (RadioButton) findViewById(R.id.rbP6_1);
		rbP6_2 = (RadioButton) findViewById(R.id.rbP6_2);
		rbP6_3 = (RadioButton) findViewById(R.id.rbP6_3);
		rbP6_4 = (RadioButton) findViewById(R.id.rbP6_4);
		rbP6_5 = (RadioButton) findViewById(R.id.rbP6_5);
		rbP6_6 = (RadioButton) findViewById(R.id.rbP6_6);
		rbP6_7 = (RadioButton) findViewById(R.id.rbP6_7);
		rbP6_8 = (RadioButton) findViewById(R.id.rbP6_8);
		etP6_4_Otro = (EditText) findViewById(R.id.etP6_4_Otro);
		etP6_8_Otro = (EditText) findViewById(R.id.etP6_8_Otro);
		etP6_OBS = (EditText) findViewById(R.id.etP6_OBS);

		radioGroup(rbP6_1, rbP6_2, rbP6_3, rbP6_4, rbP6_5, rbP6_6, rbP6_7,
				rbP6_8);
	}

	RadioButton[] rbs;

	public void radioGroup(RadioButton... rb) {
		rbs = rb;

		for (final RadioButton r : rb) {
			r.setOnCheckedChangeListener(new OnCheckedChangeListener() {

				@Override
				public void onCheckedChanged(CompoundButton arg0, boolean est) {
					// TODO Auto-generated method stub
					if (est) {
						seleccionar(r);
					}
				}
			});
		}
	}

	public void seleccionar(RadioButton rb) {
		for (int i = 0; i < rbs.length; i++) {
			if (rbs[i] != rb) {
				rbs[i].setChecked(false);
			}
		}
	}

	private void AgregarEventos() {
		rbP3_4.setOnCheckedChangeListener(new OnCheckedChangeListener() {

			@Override
			public void onCheckedChanged(CompoundButton arg0, boolean estado) {
				if (estado) {
					etP3_4_Otro.setVisibility(View.VISIBLE);
				} else {
					etP3_4_Otro.setText("");
					etP3_4_Otro.setVisibility(View.GONE);
				}
			}
		});

	}

	private void CargarDatos() {
		marco_id = getIntent().getExtras().getInt("marco_id");
		formato_id = getIntent().getExtras().getInt("formato_id");
		conglomerado = getIntent().getExtras().getString("conglomerado");
		grupo = getIntent().getExtras().getString("grupo");
		vivienda = getIntent().getExtras().getString("vivienda");
		hogar_id = getIntent().getExtras().getString("hogar_id");

		lista = con.RespuestaEncuestaBuscarCap(marco_id, formato_id, 20,
				hogar_id);

		if (lista != null) {
			// Pregunta 1
			rbP1_1.setChecked(isChecked(lista.get(0).getP_OTRO(), 1));
			rbP1_2.setChecked(isChecked(lista.get(0).getP_OTRO(), 2));
			etP1_OBS.setText(lista.get(0).getP_OBS());

			// Pregunta 2
			rbP2_1.setChecked(isChecked(lista.get(1).getP_OTRO(), 1));
			rbP2_2.setChecked(isChecked(lista.get(1).getP_OTRO(), 2));
			etP2_OBS.setText(lista.get(1).getP_OBS());

			// Pregunta 3
			rbP3_1.setChecked(isChecked(lista.get(2).getP_OTRO(), 1));
			rbP3_2.setChecked(isChecked(lista.get(2).getP_OTRO(), 2));
			rbP3_3.setChecked(isChecked(lista.get(2).getP_OTRO(), 3));
			rbP3_4.setChecked(isChecked(lista.get(2).getP_OTRO(), 4));
			etP3_4_Otro.setText(lista.get(2).getP_OTRO_ESP());
			etP3_OBS.setText(lista.get(2).getP_OBS());

			// Pregunta 4
			rbP4_1.setChecked(isChecked(lista.get(3).getP_OTRO(), 1));
			rbP4_2.setChecked(isChecked(lista.get(3).getP_OTRO(), 2));
			etP4_OBS.setText(lista.get(3).getP_OBS());

			// Pregunta 5
			rbP5_1.setChecked(isChecked(lista.get(4).getP_OTRO(), 1));
			rbP5_2.setChecked(isChecked(lista.get(4).getP_OTRO(), 2));
			rbP5_3.setChecked(isChecked(lista.get(4).getP_OTRO(), 3));
			etP5_OBS.setText(lista.get(4).getP_OBS());

			// Pregunta 3
			rbP6_1.setChecked(isChecked(lista.get(5).getP_OTRO(), 1));
			rbP6_2.setChecked(isChecked(lista.get(5).getP_OTRO(), 2));
			rbP6_3.setChecked(isChecked(lista.get(5).getP_OTRO(), 3));
			rbP6_4.setChecked(isChecked(lista.get(5).getP_OTRO(), 4));
			rbP6_5.setChecked(isChecked(lista.get(5).getP_OTRO(), 5));
			rbP6_6.setChecked(isChecked(lista.get(5).getP_OTRO(), 6));
			rbP6_7.setChecked(isChecked(lista.get(5).getP_OTRO(), 7));
			rbP6_8.setChecked(isChecked(lista.get(5).getP_OTRO(), 8));
			etP6_4_Otro.setText(lista.get(5).getP_OTRO_ESP());
			etP6_8_Otro.setText(lista.get(5).getP_OTRO_ESP());
			etP6_OBS.setText(lista.get(5).getP_OBS());

		}
	}

	private boolean isChecked(String ind, int i) {
		return ind.equals("" + i) ? true : false;
	}

	private void GuardarDatos() {
		if (lista == null) {
			lista = new ArrayList<RespuestaEncuesta>();
			for (int i = 0; i < 6; i++) {
				RespuestaEncuesta x = new RespuestaEncuesta();
				x.setFormato_id(formato_id);
				x.setMarco_id(marco_id);
				x.setConglomerado(conglomerado);
				x.setGrupo(grupo);
				x.setVivienda(vivienda);
				x.setHogar(hogar_id);
				x.setTipo_reg("");
				x.setOrden("");
				x.setTipo("3");
				x.setCap("20");
				x.setCodigo("" + (401 + i));
				lista.add(x);
			}
		}

		lista.get(0).setP_OTRO(
				rbP1_1.isChecked() ? "1" : (rbP1_2.isChecked() ? "2" : ""));
		lista.get(0).setP_OBS(etP1_OBS.getText().toString());

		lista.get(1).setP_OTRO(
				rbP2_1.isChecked() ? "1" : (rbP2_2.isChecked() ? "2" : ""));
		lista.get(1).setP_OBS(etP2_OBS.getText().toString());

		lista.get(2).setP_OTRO(
				rbP3_1.isChecked() ? "1" : (rbP3_2.isChecked() ? "2" : (rbP3_3
						.isChecked() ? "3" : (rbP3_4.isChecked() ? "4" : ""))));
		lista.get(2).setP_OBS(etP3_OBS.getText().toString());
		lista.get(2).setP_OTRO_ESP(etP3_4_Otro.getText().toString());

		lista.get(3).setP_OTRO(
				rbP4_1.isChecked() ? "1" : (rbP4_2.isChecked() ? "2" : ""));
		lista.get(3).setP_OBS(etP4_OBS.getText().toString());

		lista.get(4).setP_OTRO(
				rbP5_1.isChecked() ? "1" : (rbP5_2.isChecked() ? "2" : (rbP5_3
						.isChecked() ? "3" : "")));
		lista.get(4).setP_OBS(etP5_OBS.getText().toString());

		lista.get(5).setP_OTRO(
				rbP6_1.isChecked() ? "1" : (rbP6_2.isChecked() ? "2" : (rbP6_3
						.isChecked() ? "3" : (rbP6_4.isChecked() ? "4"
						: (rbP6_5.isChecked() ? "5" : (rbP6_6.isChecked() ? "6"
								: (rbP6_7.isChecked() ? "7" : (rbP6_8
										.isChecked() ? "8" : ""))))))));
		lista.get(5).setP_OBS(etP6_OBS.getText().toString());
		if (etP6_4_Otro.getText().toString().length() != 0) {
			lista.get(5).setP_OTRO_ESP(etP6_4_Otro.getText().toString());
		} else {
			lista.get(5).setP_OTRO_ESP(etP6_8_Otro.getText().toString());
		}

	}
}
